package com.ruoyi.pack.domain;

import java.math.BigDecimal;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.pack.domain.dto.FenceInfoDto;
import com.ruoyi.pack.domain.dto.FenceOperationDto;

/**
 * 仓库表 pack_warehouse
 * 
 * @author ruoyi
 */
public class PackWarehouse extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 仓库ID */
    private Long warehouseId;

    /** 仓库编码 */
    @Excel(name = "仓库编码")
    private String warehouseCode;

    /** 仓库名称 */
    @Excel(name = "仓库名称")
    private String warehouseName;

    /** 所属公司ID */
    private Long companyId;

    /** 所属部门ID */
    private Long deptId;

    /** 仓库地址 */
    @Excel(name = "仓库地址")
    private String warehouseAddress;

    /** 管理员用户ID */
    private Long managerId;

    /** 所属公司名称（用于导出） */
    @Excel(name = "所属公司")
    private String companyName;

    /** 所属部门名称（用于导出） */
    @Excel(name = "所属部门")
    private String deptName;

    /** 管理员姓名（用于导出） */
    @Excel(name = "管理员姓名")
    private String managerName;

    /** 管理员电话 */
    @Excel(name = "管理员电话")
    private String managerPhone;

    /** 纬度 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /** 经度 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 状态（0-停用 1-启用） */
    @Excel(name = "状态", readConverterExp = "0=停用,1=启用")
    private String status;

    /** 围栏列表（新增仓库时使用） */
    private List<FenceInfoDto> fenceList;

    /** 围栏操作列表（修改仓库时使用） */
    private List<FenceOperationDto> fenceOperations;

    public Long getWarehouseId()
    {
        return warehouseId;
    }

    public void setWarehouseId(Long warehouseId)
    {
        this.warehouseId = warehouseId;
    }

    @NotBlank(message = "仓库编码不能为空")
    @Size(min = 0, max = 50, message = "仓库编码长度不能超过50个字符")
    public String getWarehouseCode()
    {
        return warehouseCode;
    }

    public void setWarehouseCode(String warehouseCode)
    {
        this.warehouseCode = warehouseCode;
    }

    @NotBlank(message = "仓库名称不能为空")
    @Size(min = 0, max = 100, message = "仓库名称长度不能超过100个字符")
    public String getWarehouseName()
    {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName)
    {
        this.warehouseName = warehouseName;
    }

    public Long getCompanyId()
    {
        return companyId;
    }

    public void setCompanyId(Long companyId)
    {
        this.companyId = companyId;
    }

    public Long getDeptId()
    {
        return deptId;
    }

    public void setDeptId(Long deptId)
    {
        this.deptId = deptId;
    }

    @Size(min = 0, max = 500, message = "仓库地址长度不能超过500个字符")
    public String getWarehouseAddress()
    {
        return warehouseAddress;
    }

    public void setWarehouseAddress(String warehouseAddress)
    {
        this.warehouseAddress = warehouseAddress;
    }

    public Long getManagerId()
    {
        return managerId;
    }

    public void setManagerId(Long managerId)
    {
        this.managerId = managerId;
    }

    @Size(min = 0, max = 20, message = "管理员电话长度不能超过20个字符")
    public String getManagerPhone()
    {
        return managerPhone;
    }

    public void setManagerPhone(String managerPhone)
    {
        this.managerPhone = managerPhone;
    }

    public BigDecimal getLatitude()
    {
        return latitude;
    }

    public void setLatitude(BigDecimal latitude)
    {
        this.latitude = latitude;
    }

    public BigDecimal getLongitude()
    {
        return longitude;
    }

    public void setLongitude(BigDecimal longitude)
    {
        this.longitude = longitude;
    }

    public String getStatus()
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getCompanyName()
    {
        return companyName;
    }

    public void setCompanyName(String companyName)
    {
        this.companyName = companyName;
    }

    public String getDeptName()
    {
        return deptName;
    }

    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }

    public String getManagerName()
    {
        return managerName;
    }

    public void setManagerName(String managerName)
    {
        this.managerName = managerName;
    }

    public List<FenceInfoDto> getFenceList()
    {
        return fenceList;
    }

    public void setFenceList(List<FenceInfoDto> fenceList)
    {
        this.fenceList = fenceList;
    }

    public List<FenceOperationDto> getFenceOperations()
    {
        return fenceOperations;
    }

    public void setFenceOperations(List<FenceOperationDto> fenceOperations)
    {
        this.fenceOperations = fenceOperations;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("warehouseId", getWarehouseId())
            .append("warehouseCode", getWarehouseCode())
            .append("warehouseName", getWarehouseName())
            .append("companyId", getCompanyId())
            .append("deptId", getDeptId())
            .append("warehouseAddress", getWarehouseAddress())
            .append("managerId", getManagerId())
            .append("managerPhone", getManagerPhone())
            .append("latitude", getLatitude())
            .append("longitude", getLongitude())
            .append("status", getStatus())
            .append("companyName", getCompanyName())
            .append("deptName", getDeptName())
            .append("managerName", getManagerName())
            .append("remark", getRemark())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
} 